package com.tongfusoft.utils;

import java.text.MessageFormat;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class Logger {
  public Logger() {
    super();
  }

  private static String getCallerClass() {
    return Thread.currentThread().getStackTrace()[3].getClassName();
  }

  /**
   * 
   * debug 信息
   * 
   * @param
   * @return void
   * @throws
   */
  public static void debug(String message) {
    debug(getCallerClass(), message);
  }

  /**
   * 
   * debug 信息
   * 
   * @param
   * @return void
   * @throws
   */
  public static void debug(String message, Object... params) {
    debug(getCallerClass(), message, params);
  }

  /**
   * 
   * debug 信息
   * 
   * @param
   * @return void
   * @throws
   */
  public static void debug(String clazz, String message) {
    Log logger = getLogger(clazz);
    if (logger.isDebugEnabled()) logger.debug(message);
  }

  /**
   * 
   * debug信息
   * 
   * @param
   * @return void
   * @throws
   */
  public static void debug(String clazz, String message, Object... params) {
    Log logger = getLogger(clazz);
    if (logger.isDebugEnabled()) logger.debug(MessageFormat.format(message, params));
  }

  /**
   * 
   * debug 信息
   * 
   * @param
   * @return void
   * @throws
   */
  public static void debug(Class clazz, String message) {
    debug(clazz.getName(), message);
  }

  /**
   * 
   * debug 信息
   * 
   * @param
   * @return void
   * @throws
   */
  public static void debug(Class clazz, String message, Object... params) {
    debug(clazz.getName(), message, params);
  }

  /**
   * 
   * info 信息
   * 
   * @param
   * @return void
   * @throws
   */
  public static void info(String message) {
    info(getCallerClass(), message);
  }

  /**
   * 
   * info 信息
   * 
   * @param
   * @return void
   * @throws
   */
  public static void info(String message, Object... params) {
    info(getCallerClass(), message, params);
  }

  /**
   * 
   * info 信息
   * 
   * @param
   * @return void
   * @throws
   */
  public static void info(String clazz, String message) {
    Log logger = getLogger(clazz);
    if (logger.isInfoEnabled()) logger.info(message);
  }

  /**
   * 
   * info 信息
   * 
   * @param
   * @return void
   * @throws
   */
  public static void info(String clazz, String message, Object... params) {
    Log logger = getLogger(clazz);
    if (logger.isInfoEnabled()) logger.info(MessageFormat.format(message, params));
  }

  /**
   * 
   * info 信息
   * 
   * @param
   * @return void
   * @throws
   */
  public static void info(Class clazz, String message) {
    info(clazz.getName(), message);
  }

  /**
   * 
   * info 信息
   * 
   * @param
   * @return void
   * @throws
   */
  public static void info(Class clazz, String message, Object... params) {
    info(clazz.getName(), message, params);
  }

  /**
   * 
   * warn 信息
   * 
   * @param
   * @return void
   * @throws
   */
  public static void warn(String clazz, String message) {
    Log logger = getLogger(clazz);
    if (logger.isWarnEnabled()) logger.warn(message);
  }

  /**
   * 
   * warn 信息
   * 
   * @param
   * @return void
   * @throws
   */
  public static void warn(String clazz, String message, Object... params) {
    Log logger = getLogger(clazz);
    if (logger.isWarnEnabled()) logger.warn(MessageFormat.format(message, params));
  }

  /**
   * 
   * warn 信息
   * 
   * @param
   * @return void
   * @throws
   */
  public static void warn(Class clazz, String message) {
    warn(clazz.getName(), message);
  }

  /**
   * 
   * warn 信息
   * 
   * @param
   * @return void
   * @throws
   */
  public static void warn(Class clazz, String message, Object... params) {
    warn(clazz.getName(), message, params);
  }

  /**
   * 
   * warn 信息
   * 
   * @param
   * @return void
   * @throws
   */
  public static void warn(String message) {
    warn(getCallerClass(), message);
  }

  /**
   * 
   * warn 信息
   * 
   * @param
   * @return void
   * @throws
   */
  public static void warn(String message, Object... params) {
    warn(getCallerClass(), message);
  }

  /**
   * 
   * error 信息
   * 
   * @param
   * @return void
   * @throws
   */
  public static void error(String clazz, String message) {
    Log logger = getLogger(clazz);
    if (logger.isErrorEnabled()) logger.error(message);
  }

  /**
   * 
   * error 信息
   * 
   * @param
   * @return void
   * @throws
   */
  public static void error(String clazz, String message, Object... params) {
    Log logger = getLogger(clazz);
    if (logger.isErrorEnabled()) logger.error(MessageFormat.format(message, params));
  }

  /**
   * 
   * error 信息
   * 
   * @param
   * @return void
   * @throws
   */
  public static void error(Class clazz, String message) {
    error(clazz.getName(), message);
  }

  /**
   * 
   * error 信息
   * 
   * @param
   * @return void
   * @throws
   */
  public static void error(Class clazz, String message, Object... params) {
    error(clazz.getName(), message, params);
  }

  /**
   * 
   * error 信息
   * 
   * @param
   * @return void
   * @throws
   */
  public static void error(String message) {
    error(getCallerClass(), message);
  }

  /**
   * 
   * error 信息
   * 
   * @param
   * @return void
   * @throws
   */
  public static void error(String message, Object... params) {
    error(getCallerClass(), message);
  }

  private static Log getLogger(Class clazz) {
    return LogFactory.getLog(clazz);
  }

  private static Log getLogger(String key) {
    return LogFactory.getLog(key);
  }
}
